<?php

/**
 * A list of formfields which allows for iterative processing of nested composite fields
 */
class UserFormsFieldList extends FieldList implements UserFormsFieldContainer {

	public function processNext(EditableFormField $field) {
		$formField = $field->getFormField();
		if(!$formField) {
			return $this;
		}

		$this->push($formField);

		if($formField instanceof UserFormsFieldContainer) {
			return $formField->setParent($this);
		}

		return $this;
	}

	public function getParent() {
		// Field list does not have a parent
		return null;
	}

	public function setParent(UserFormsFieldContainer $parent) {
		return $this;
	}

	/**
	 * Remove all empty steps
	 */
	public function clearEmptySteps() {
		foreach($this as $field) {
			if($field instanceof UserFormsStepField && count($field->getChildren()) === 0) {
				$this->remove($field);
			}
		}
	}

}
